import Assert from '@/utils/assets'
import DoubleCycleLinkedList from '../doubleCycleLinkedList';
// import { hasCycle, reverse, reverseUseIterator } from '../example';
// 测试
export const test = () => {
    const ll = new DoubleCycleLinkedList();
    const assert = new Assert();
    assert.type('size').expect(ll.size()).toBe(0)
    assert.type('isEmpty').expect(ll.isEmpty()).toBe(true)
    assert.type('root').expect(ll.getRoot()).toBe(null)

    ll.add(1)
    ll.add(2)
    ll.add(3)
    ll.add(4)
    ll.add(5)

    // ll.addToIndex(1, 100)

    // print(ll)
    // ll.remove(2)
    // print(ll)

    
    // ll.unshift(100)
    // ll.unshift(200)
    // ll.unshift(300)
    // print(ll)

    // console.log(ll.getRoot())
    // debugger
    // ll.remove(1);
    // console.log(ll.getRoot())
    // print(ll)


}




/**
 * 打印 doubleLinkList
 * @param ll
 */
const print = <T>(ll: DoubleCycleLinkedList<T>) => {
    let str = '';
    ll.forEach((node) => {
        str += `${node.value} -> `
    })
    str += ll.getRoot()!.value;
    console.log(str)
}